Notification Q&A

昨天(2014-11-23)第一次接触了安卓中的Notification,在实现Demo遇到了一些小问题。这里把其中一些记录下来,以供后人(我自己)参考

Q1:Notification为何物?

Notification,从字面意思而言,就是通知。通知会一直停留在通知栏中,并且按照优先级和时间排序。就比如别人在QQ中发给你一条消息,那么就会在通知栏中得到体现。
Notification还有一些额外功能,比如震动和提示音,或者持续提醒。

Q2:如何创建最基本的Notification?

如何发出Notification呢,首先构造一个Notification

1
2
3
Notification.Builder builder = new Notification.Builder(MyActivity.this);
builder.setSmallIcon(R.drawable.ic_launcher);
Notification notification = builder.build();

这里用Notification.Builer构造Notification,其中setSmallIcon是必要的,如果没有调用该函数,Notification不会出现。
构造完Notification后,使用NotificationManager激活Notification

1
2
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notification.notify("tag", id, notification);

相同的tag和相同的id,会使notification被替换,要注意

Q3:如何设置Notification的内容?

你可以在Notification中加入文字、替换图标,甚至是使用自定义的View。这里只讲标题和图标

  • setContentTitle()设置标题
  • setContentText()设置文字
  • setLargeIcon()会使小图标显示在右下角,并改变左边的大图标图标
  • setContentInfo在小图标旁边的文字
  • setNumber在小图标旁边的数字

使用这些方法,就能改变Notification的内容。

Q4:怎么让Notification“BIU”的一下跳出来?

这里提供一些方法,让你的Notification引人注目。

  • setTicker()激活时,会占满整个通知栏
  • setVibrate()激活时震动
  • setSound()激活时播放声音
  • setLight()激活时闪光
    后面三个方法可以用setDefaults()来简单实现

Q5:怎么让通知栏中的Notification一点就消失?

通常情况下,Notification需要NotificationManager的cancel()方法进行消除。
如果需要让他一点就消失,需要为Notification设置autoCancel。
autoCancel设置完之后,仍需要setContentIntent,autoCancel才会生效。

分享到 评论